﻿using System;
using System.Collections.Generic;

namespace WUDI.ECharts
{
	/// <summary>
	/// 图表实例的配置项以及数据
	/// </summary>
	public class EChartsOption
	{

		/// <summary>
		/// Object
		/// 标题组件，包含主标题和副标题。
		/// 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件。但是在 ECharts 3 中可以存在任意多个标题组件，这在需要标题进行排版，或者单个实例中的多个图表都需要标题时会比较有用。
		/// 例如下面不同缓动函数效果的示例，每一个缓动效果图都带有一个标题组件：
		/// </summary>
		public WUDI.ECharts.Title.Title title { get; set; }

		/// <summary>
		/// Object
		/// 图例组件。
		/// 图例组件展现了不同系列的标记(symbol)，颜色和名字。可以通过点击图例控制哪些系列不显示。
		/// ECharts 3 中单个 echarts 实例中可以存在多个图例组件，会方便多个图例的布局。
		/// 当图例数量过多时，可以使用 滚动图例（垂直） 或 滚动图例（水平），参见：legend.type
		/// </summary>
		public WUDI.ECharts.Legend.Legend legend { get; set; }

		/// <summary>
		/// Object
		/// 直角坐标系内绘图网格，单个 grid 内最多可以放置上下两个 X 轴，左右两个 Y 轴。可以在网格上绘制折线图，柱状图，散点图（气泡图）。
		/// 在 ECharts 2.x 里单个 echarts 实例中最多只能存在一个 grid 组件，在 ECharts 3 中可以存在任意个 grid 组件。
		/// 例如下面这个 Anscombe Quartet 的示例：
		/// </summary>
		public WUDI.ECharts.Grid.Grid grid { get; set; }

		/// <summary>
		/// Object
		/// 直角坐标系 grid 中的 x 轴，一般情况下单个 grid 组件最多只能放上下两个 x 轴，多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠。
		/// </summary>
		public WUDI.ECharts.XAxis.XAxis xAxis { get; set; }

		/// <summary>
		/// Object
		/// 直角坐标系 grid 中的 y 轴，一般情况下单个 grid 组件最多只能放左右两个 y 轴，多于两个 y 轴需要通过配置 offset 属性防止同个位置多个 Y 轴的重叠。
		/// </summary>
		public WUDI.ECharts.YAxis.YAxis yAxis { get; set; }

		/// <summary>
		/// Object
		/// 极坐标系，可以用于散点图和折线图。每个极坐标系拥有一个角度轴和一个半径轴。
		/// 示例：
		/// </summary>
		public WUDI.ECharts.Polar.Polar polar { get; set; }

		/// <summary>
		/// Object
		/// 极坐标系的径向轴。
		/// </summary>
		public WUDI.ECharts.RadiusAxis.RadiusAxis radiusAxis { get; set; }

		/// <summary>
		/// Object
		/// 极坐标系的角度轴。
		/// </summary>
		public WUDI.ECharts.AngleAxis.AngleAxis angleAxis { get; set; }

		/// <summary>
		/// Object
		/// 雷达图坐标系组件，只适用于雷达图。该组件等同 ECharts 2 中的 polar 组件。因为 3 中的 polar 被重构为标准的极坐标组件，为避免混淆，雷达图使用 radar 组件作为其坐标系。
		/// 雷达图坐标系与极坐标系不同的是它的每一个轴（indicator 指示器）都是一个单独的维度，可以通过 name、axisLine、axisTick、axisLabel、splitLine、 splitArea 几个配置项配置指示器坐标轴线的样式。
		/// 下面是一个 radar 组件的一个自定义例子。
		/// </summary>
		public WUDI.ECharts.Radar.Radar radar { get; set; }

		/// <summary>
		/// Array
		/// </summary>
		public List<object> dataZoom { get; set; }

		/// <summary>
		/// Array
		/// </summary>
		public List<object> visualMap { get; set; }

		/// <summary>
		/// Object
		/// 提示框组件。
		/// 提示框组件的通用介绍：
		/// 提示框组件可以设置在多种地方：
		/// 可以设置在全局，即 tooltip
		/// 可以设置在坐标系中，即 grid.tooltip、polar.tooltip、single.tooltip
		/// 可以设置在系列中，即 series.tooltip
		/// 可以设置在系列的每个数据项中，即 series.data.tooltip
		/// </summary>
		public WUDI.ECharts.Tooltip.Tooltip tooltip { get; set; }

		/// <summary>
		/// Object
		/// </summary>
		public WUDI.ECharts.AxisPointer.AxisPointer axisPointer { get; set; }

		/// <summary>
		/// Object
		/// 工具栏。内置有导出图片，数据视图，动态类型切换，数据区域缩放，重置五个工具。
		/// 如下示例：
		/// </summary>
		public WUDI.ECharts.Toolbox.Toolbox toolbox { get; set; }

		/// <summary>
		/// Object
		/// </summary>
		public WUDI.ECharts.Brush brush { get; set; }

		/// <summary>
		/// Object
		/// 地理坐标系组件。
		/// 地理坐标系组件用于地图的绘制，支持在地理坐标系上绘制散点图，线集。
		/// 3.1.10 开始 geo 组件也支持鼠标事件。事件参数为
		/// {
		///     componentType: 'geo',
		///     // Geo 组件在 option 中的 index
		///     geoIndex: number,
		///     // 点击区域的名称，比如"上海"
		///     name: string,
		///     // 传入的点击区域的 region 对象，见 geo.regions
		///     region: Object
		/// }
		/// Tip:
		/// geo 区域的颜色也可以被 map series 所控制，参见 series-map.geoIndex。
		/// </summary>
		public WUDI.ECharts.Geo.Geo geo { get; set; }

		/// <summary>
		/// Object
		/// 平行坐标系介绍
		/// 平行坐标系（Parallel Coordinates） 是一种常用的可视化高维数据的图表。
		/// 例如 series-parallel.data 中有如下数据：
		/// [
		///     [1,  55,  9,   56,  0.46,  18,  6,  '良'],
		///     [2,  25,  11,  21,  0.65,  34,  9,  '优'],
		///     [3,  56,  7,   63,  0.3,   14,  5,  '良'],
		///     [4,  33,  7,   29,  0.33,  16,  6,  '优'],
		///     { // 数据项也可以是 Object，从而里面能含有对线条的特殊设置。
		///         value: [5,  42,  24,  44,  0.76,  40,  16, '优']
		///         lineStyle: {...},
		///     }
		///     ...
		/// ]
		/// 数据中，每一行是一个『数据项』，每一列属于一个『维度』。（例如上面数据每一列的含义分别是：『日期』,『AQI指数』, 『PM2.5』, 『PM10』, 『一氧化碳值』, 『二氧化氮值』, 『二氧化硫值』）。
		/// 平行坐标系适用于对这种多维数据进行可视化分析。每一个维度（每一列）对应一个坐标轴，每一个『数据项』是一条线，贯穿多个坐标轴。在坐标轴上，可以进行数据选取等操作。如下：
		/// 配置方式概要
		/// 『平行坐标系』的 option 基本配置如下例：
		/// option = {
		///     parallelAxis: [                     // 这是一个个『坐标轴』的定义
		///         {dim: 0, name: schema[0].text}, // 每个『坐标轴』有个 'dim' 属性，表示坐标轴的维度号。
		///         {dim: 1, name: schema[1].text},
		///         {dim: 2, name: schema[2].text},
		///         {dim: 3, name: schema[3].text},
		///         {dim: 4, name: schema[4].text},
		///         {dim: 5, name: schema[5].text},
		///         {dim: 6, name: schema[6].text},
		///         {dim: 7, name: schema[7].text,
		///             type: 'category',           // 坐标轴也可以支持类别型数据
		///             data: ['优', '良', '轻度污染', '中度污染', '重度污染', '严重污染']
		///         }
		///     ],
		///     parallel: {                         // 这是『坐标系』的定义
		///         left: '5%',                     // 平行坐标系的位置设置
		///         right: '13%',
		///         bottom: '10%',
		///         top: '20%',
		///         parallelAxisDefault: {          // 『坐标轴』的公有属性可以配置在这里避免重复书写
		///             type: 'value',
		///             nameLocation: 'end',
		///             nameGap: 20
		///         }
		///     },
		///     series: [                           // 这里三个系列共用一个平行坐标系
		///         {
		///             name: '北京',
		///             type: 'parallel',           // 这个系列类型是 'parallel'
		///             data: [
		///                 [1,  55,  9,   56,  0.46,  18,  6,  '良'],
		///                 [2,  25,  11,  21,  0.65,  34,  9,  '优'],
		///                 ...
		///             ]
		///         },
		///         {
		///             name: '上海',
		///             type: 'parallel',
		///             data: [
		///                 [3,  56,  7,   63,  0.3,   14,  5,  '良'],
		///                 [4,  33,  7,   29,  0.33,  16,  6,  '优'],
		///                 ...
		///             ]
		///         },
		///         {
		///             name: '广州',
		///             type: 'parallel',
		///             data: [
		///                 [4,  33,  7,   29,  0.33,  16,  6,  '优'],
		///                 [5,  42,  24,  44,  0.76,  40,  16, '优'],
		///                 ...
		///             ]
		///         }
		///     ]
		/// };
		/// 需要涉及到三个组件：parallel、parallelAxis、series-parallel
		/// parallel
		///   这个配置项是平行坐标系的『坐标系』本身。一个系列（series）或多个系列（如上图中的『北京』、『上海』、『广州』分别各是一个系列）可以共用这个『坐标系』。
		///   和其他坐标系一样，坐标系也可以创建多个。
		///   位置设置，也是放在这里进行。
		/// parallelAxis
		///   这个是『坐标系』中的坐标轴的配置。自然，需要有多个坐标轴。
		///   其中有 parallelAxis.parallelIndex 属性，指定这个『坐标轴』在哪个『坐标系』中。默认使用第一个『坐标系』。
		/// series-parallel
		///   这个是『系列』的定义。系列被画到『坐标系』上。
		///   其中有 series-parallel.parallelIndex 属性，指定使用哪个『坐标系』。默认使用第一个『坐标系』。
		/// 配置注意和最佳实践
		/// 配置多个 parallelAxis 时，有些值一样的属性，如果书写多遍则比较繁琐，那么可以放置在 parallel.parallelAxisDefault 里。在坐标轴初始化前，parallel.parallelAxisDefault 里的配置项，会分别融合进 parallelAxis，形成最终的坐标轴的配置。
		/// 如果数据量很大并且发生卡顿
		/// 建议把 series-parallel.lineStyle.width 设为 0.5（或更小），
		/// 可能显著改善性能。
		/// 高维数据的显示
		/// 维度比较多时，比如有 50+ 的维度，那么就会有 50+ 个轴。那么可能会页面显示不下。
		/// 可以通过 parallel.axisExpandable 来改善显示效果。
		/// </summary>
		public WUDI.ECharts.Parallel.Parallel parallel { get; set; }

		/// <summary>
		/// Object
		/// 这个组件是平行坐标系中的坐标轴。
		/// 平行坐标系介绍
		/// 平行坐标系（Parallel Coordinates） 是一种常用的可视化高维数据的图表。
		/// 例如 series-parallel.data 中有如下数据：
		/// [
		///     [1,  55,  9,   56,  0.46,  18,  6,  '良'],
		///     [2,  25,  11,  21,  0.65,  34,  9,  '优'],
		///     [3,  56,  7,   63,  0.3,   14,  5,  '良'],
		///     [4,  33,  7,   29,  0.33,  16,  6,  '优'],
		///     { // 数据项也可以是 Object，从而里面能含有对线条的特殊设置。
		///         value: [5,  42,  24,  44,  0.76,  40,  16, '优']
		///         lineStyle: {...},
		///     }
		///     ...
		/// ]
		/// 数据中，每一行是一个『数据项』，每一列属于一个『维度』。（例如上面数据每一列的含义分别是：『日期』,『AQI指数』, 『PM2.5』, 『PM10』, 『一氧化碳值』, 『二氧化氮值』, 『二氧化硫值』）。
		/// 平行坐标系适用于对这种多维数据进行可视化分析。每一个维度（每一列）对应一个坐标轴，每一个『数据项』是一条线，贯穿多个坐标轴。在坐标轴上，可以进行数据选取等操作。如下：
		/// 配置方式概要
		/// 『平行坐标系』的 option 基本配置如下例：
		/// option = {
		///     parallelAxis: [                     // 这是一个个『坐标轴』的定义
		///         {dim: 0, name: schema[0].text}, // 每个『坐标轴』有个 'dim' 属性，表示坐标轴的维度号。
		///         {dim: 1, name: schema[1].text},
		///         {dim: 2, name: schema[2].text},
		///         {dim: 3, name: schema[3].text},
		///         {dim: 4, name: schema[4].text},
		///         {dim: 5, name: schema[5].text},
		///         {dim: 6, name: schema[6].text},
		///         {dim: 7, name: schema[7].text,
		///             type: 'category',           // 坐标轴也可以支持类别型数据
		///             data: ['优', '良', '轻度污染', '中度污染', '重度污染', '严重污染']
		///         }
		///     ],
		///     parallel: {                         // 这是『坐标系』的定义
		///         left: '5%',                     // 平行坐标系的位置设置
		///         right: '13%',
		///         bottom: '10%',
		///         top: '20%',
		///         parallelAxisDefault: {          // 『坐标轴』的公有属性可以配置在这里避免重复书写
		///             type: 'value',
		///             nameLocation: 'end',
		///             nameGap: 20
		///         }
		///     },
		///     series: [                           // 这里三个系列共用一个平行坐标系
		///         {
		///             name: '北京',
		///             type: 'parallel',           // 这个系列类型是 'parallel'
		///             data: [
		///                 [1,  55,  9,   56,  0.46,  18,  6,  '良'],
		///                 [2,  25,  11,  21,  0.65,  34,  9,  '优'],
		///                 ...
		///             ]
		///         },
		///         {
		///             name: '上海',
		///             type: 'parallel',
		///             data: [
		///                 [3,  56,  7,   63,  0.3,   14,  5,  '良'],
		///                 [4,  33,  7,   29,  0.33,  16,  6,  '优'],
		///                 ...
		///             ]
		///         },
		///         {
		///             name: '广州',
		///             type: 'parallel',
		///             data: [
		///                 [4,  33,  7,   29,  0.33,  16,  6,  '优'],
		///                 [5,  42,  24,  44,  0.76,  40,  16, '优'],
		///                 ...
		///             ]
		///         }
		///     ]
		/// };
		/// 需要涉及到三个组件：parallel、parallelAxis、series-parallel
		/// parallel
		///   这个配置项是平行坐标系的『坐标系』本身。一个系列（series）或多个系列（如上图中的『北京』、『上海』、『广州』分别各是一个系列）可以共用这个『坐标系』。
		///   和其他坐标系一样，坐标系也可以创建多个。
		///   位置设置，也是放在这里进行。
		/// parallelAxis
		///   这个是『坐标系』中的坐标轴的配置。自然，需要有多个坐标轴。
		///   其中有 parallelAxis.parallelIndex 属性，指定这个『坐标轴』在哪个『坐标系』中。默认使用第一个『坐标系』。
		/// series-parallel
		///   这个是『系列』的定义。系列被画到『坐标系』上。
		///   其中有 series-parallel.parallelIndex 属性，指定使用哪个『坐标系』。默认使用第一个『坐标系』。
		/// 配置注意和最佳实践
		/// 配置多个 parallelAxis 时，有些值一样的属性，如果书写多遍则比较繁琐，那么可以放置在 parallel.parallelAxisDefault 里。在坐标轴初始化前，parallel.parallelAxisDefault 里的配置项，会分别融合进 parallelAxis，形成最终的坐标轴的配置。
		/// 如果数据量很大并且发生卡顿
		/// 建议把 series-parallel.lineStyle.width 设为 0.5（或更小），
		/// 可能显著改善性能。
		/// 高维数据的显示
		/// 维度比较多时，比如有 50+ 的维度，那么就会有 50+ 个轴。那么可能会页面显示不下。
		/// 可以通过 parallel.axisExpandable 来改善显示效果。
		/// </summary>
		public WUDI.ECharts.ParallelAxis.ParallelAxis parallelAxis { get; set; }

		/// <summary>
		/// Object
		/// 单轴。可以被应用到散点图中展现一维数据，如下示例
		/// </summary>
		public WUDI.ECharts.SingleAxis.SingleAxis singleAxis { get; set; }

		/// <summary>
		/// Object
		/// </summary>
		public WUDI.ECharts.Timeline.Timeline timeline { get; set; }

		/// <summary>
		/// *
		/// </summary>
		public WUDI.ECharts.Graphic graphic { get; set; }

		/// <summary>
		/// Object
		/// 日历坐标系组件。
		/// 在ECharts中，我们非常有创意地实现了日历图，是通过使用日历坐标系组件来达到日历图效果的，如下方的几个示例图所示，我们可以在热力图、散点图、关系图中使用日历坐标系。
		/// 在日历坐标系中使用热力图的示例:
		/// 在日历坐标系中使用散点图的示例:
		/// 在日历坐标系中使用关系图（以及混合图表）的示例:
		/// 灵活利用 echarts 图表和坐标系的组合，以及 API，可以实现更丰富的效果。
		/// 在日历中使用文字、
		/// 在日历中放置饼图
		/// 水平和垂直放置日历
		/// 在日历坐标系可以水平放置，也可以垂直放置。如上面的例子，使用热力图时，经常是水平放置的。但是如果需要格子的尺寸大些，水平放置就过于宽了，于是也可以选择垂直放置。参见 calendar.orient。
		/// 尺寸的自适应
		/// 可以设置日历坐标系使他支持不同尺寸的容器（页面）大小变化的自适应。首先，和 echarts 其他组件一样，日历坐标系可以选择使用 left right top bottom width height 来描述尺寸和位置，从而将日历摆放在上下左右各种位置，并随着页面尺寸变动而改变自身尺寸。另外，也可以使用 cellSize 来固定日历格子的长宽。
		/// 中西方日历习惯的支持
		/// 中西方日历有所差别，西方常使用星期日作为一周的第一天，中国使用星期一为一周的第一天。日历坐标系做了这种切换的支持。参见 calendar.dayLabel.firstDay。
		/// 另外，日历上的『月份』和『星期几』的文字，也可以较方便的切换中英文，甚至自定义。参见 calendar.dayLabel.nameMap calendar.monthLabel.nameMap。
		/// </summary>
		public WUDI.ECharts.Calendar.Calendar calendar { get; set; }

		/// <summary>
		/// Object
		/// ECharts 4 开始支持了 数据集（dataset）组件用于单独的数据集声明，从而数据可以单独管理，被多个组件复用，并且可以自由指定数据到视觉的映射。这在不少场景下能带来使用上的方便。
		/// 关于 dataset 的详情，请参见教程。
		/// </summary>
		public WUDI.ECharts.Dataset dataset { get; set; }

		/// <summary>
		/// *
		/// W3C 制定了无障碍富互联网应用规范集（WAI-ARIA，the Accessible Rich Internet Applications Suite），致力于使得网页内容和网页应用能够被更多残障人士访问。ECharts 4.0 遵从这一规范，支持自动根据图表配置项智能生成描述，使得盲人可以在朗读设备的帮助下了解图表内容，让图表可以被更多人群访问。
		/// 默认关闭，需要通过将 aria.show 设置为 true 开启。开启后，会根据图表、数据、标题等情况，自动智能生成关于图表的描述，用户也可以通过配置项修改描述。
		/// 例子：
		/// 对于配置项：
		/// option = {
		///     aria: {
		///         show: true
		///     },
		///     title: {
		///         text: '某站点用户访问来源',
		///         x: 'center'
		///     },
		///     series: [
		///         {
		///             name: '访问来源',
		///             type: 'pie',
		///             data: [
		///                 { value: 335, name: '直接访问' },
		///                 { value: 310, name: '邮件营销' },
		///                 { value: 234, name: '联盟广告' },
		///                 { value: 135, name: '视频广告' },
		///                 { value: 1548, name: '搜索引擎' }
		///             ]
		///         }
		///     ]
		/// };
		/// 生成的图表 DOM 上，会有一个 aria-label 属性，在朗读设备的帮助下，盲人能够了解图表的内容。其值为：
		/// 这是一个关于“某站点用户访问来源”的图表。图表类型是饼图，表示访问来源。其数据是——直接访问的数据是335，邮件营销的数据是310，联盟广告的数据是234，视频广告的数据是135，搜索引擎的数据是1548。
		/// 生成描述的基本流程为，如果 aria.show 设置为 true，则生成无障碍访问描述，否则不生成。如果定义了 aria.description，则将其作为图表的完整描述，否则根据模板拼接生成描述。我们提供了默认的生成描述的算法，仅当生成的描述不太合适时，才需要修改这些模板，甚至使用 aria.description 完全覆盖。
		/// 使用模板拼接时，先根据是否存在标题 title.text 决定使用 aria.general.withTitle 还是 aria.general.withoutTitle 作为整体性描述。其中，aria.general.withTitle 配置项包括模板变量 '{title}'，将会被替换成图表标题。也就是说，如果 aria.general.withTitle 被设置为 '图表的标题是：{title}。'，则如果包含标题 '价格分布图'，这部分的描述为 '图表的标题是：价格分布图。'。
		/// 拼接完标题之后，会依次拼接系列的描述（aria.series），和每个系列的数据的描述（aria.data）。同样，每个模板都有可能包括模板变量，用以替换实际的值。
		/// 完整的描述生成流程为：
		/// </summary>
		public WUDI.ECharts.Aria.Aria aria { get; set; }

		/// <summary>
		/// Array
		/// 系列列表。每个系列通过 type 决定自己的图表类型
		/// </summary>
		public List<object> series { get; set; }

		/// <summary>
		/// Array
		/// 调色盘颜色列表。如果系列没有设置颜色，则会依次循环从该列表中取颜色作为系列颜色。
		/// 默认为：
		/// ['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83',  '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3']
		/// </summary>
		public List<object> color { get; set; }

		/// <summary>
		/// Color
		/// 背景色，默认无背景。
		/// 颜色可以使用 RGB 表示，比如 'rgb(128, 128, 128)'，如果想要加上 alpha 通道表示不透明度，可以使用 RGBA，比如 'rgba(128, 128, 128, 0.5)'，也可以使用十六进制格式，比如 '#ccc'。除了纯色之外颜色也支持渐变色和纹理填充
		/// // 线性渐变，前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1，相当于在图形包围盒中的百分比，如果 globalCoord 为 `true`，则该四个值是绝对的像素位置
		/// color: {
		///     type: 'linear',
		///     x: 0,
		///     y: 0,
		///     x2: 0,
		///     y2: 1,
		///     colorStops: [{
		///         offset: 0, color: 'red' // 0% 处的颜色
		///     }, {
		///         offset: 1, color: 'blue' // 100% 处的颜色
		///     }],
		///     global: false // 缺省为 false
		/// }
		/// // 径向渐变，前三个参数分别是圆心 x, y 和半径，取值同线性渐变
		/// color: {
		///     type: 'radial',
		///     x: 0.5,
		///     y: 0.5,
		///     r: 0.5,
		///     colorStops: [{
		///         offset: 0, color: 'red' // 0% 处的颜色
		///     }, {
		///         offset: 1, color: 'blue' // 100% 处的颜色
		///     }],
		///     global: false // 缺省为 false
		/// }
		/// // 纹理填充
		/// color: {
		///     image: imageDom, // 支持为 HTMLImageElement, HTMLCanvasElement，不支持路径字符串
		///     repeat: 'repeat' // 是否平铺, 可以是 'repeat-x', 'repeat-y', 'no-repeat'
		/// }
		/// </summary>
		public String backgroundColor { get; set; } = "transparent";

		/// <summary>
		/// Object
		/// 全局的字体样式。
		/// </summary>
		public WUDI.ECharts.TextStyle textStyle { get; set; }

		/// <summary>
		/// boolean
		/// 是否开启动画。
		/// </summary>
		public Boolean animation { get; set; } = true;

		/// <summary>
		/// number
		/// 是否开启动画的阈值，当单个系列显示的图形数量大于这个阈值时会关闭动画。
		/// </summary>
		public int animationThreshold { get; set; } = 2000;

		/// <summary>
		/// number
		/// 初始动画的时长，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果：
		/// animationDuration: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// </summary>
		public int animationDuration { get; set; } = 1000;

		/// <summary>
		/// string
		/// 初始动画的缓动效果。不同的缓动效果可以参考 缓动示例。
		/// </summary>
		public String animationEasing { get; set; } = "cubicOut";

		/// <summary>
		/// number,Function
		/// 初始动画的延迟，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果。
		/// 如下示例：
		/// animationDelay: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// 也可以看该示例
		/// </summary>
		public dynamic animationDelay { get; set; } = 0;

		/// <summary>
		/// number,Function
		/// 数据更新动画的时长。
		/// 支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果：
		/// animationDurationUpdate: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// </summary>
		public dynamic animationDurationUpdate { get; set; } = 300;

		/// <summary>
		/// string
		/// 数据更新动画的缓动效果。
		/// </summary>
		public String animationEasingUpdate { get; set; } = "cubicOut";

		/// <summary>
		/// number,Function
		/// 数据更新动画的延迟，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果。
		/// 如下示例：
		/// animationDelayUpdate: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// 也可以看该示例
		/// </summary>
		public dynamic animationDelayUpdate { get; set; } = 0;

		/// <summary>
		/// string
		/// 图形的混合模式，不同的混合模式见 https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation 。
		/// 默认为 'source-over'。 支持每个系列单独设置。
		/// 'lighter' 也是比较常见的一种混合模式，该模式下图形数量集中的区域会颜色叠加成高亮度的颜色（白色）。常常能起到突出该区域的效果。见示例 全球飞行航线
		/// </summary>
		public String blendMode { get; set; } = "source-over";

		/// <summary>
		/// number
		/// 图形数量阈值，决定是否开启单独的 hover 层，在整个图表的图形数量大于该阈值时开启单独的 hover 层。
		/// 单独的 hover 层主要是为了在高亮图形的时候不需要重绘整个图表，只需要把高亮的图形放入单独的一个 canvas 层进行绘制，防止在图形数量很多的时候因为高亮重绘所有图形导致卡顿。
		/// ECharts 2 里是底层强制使用单独的层绘制高亮图形，但是会带来很多问题，比如高亮的图形可能会不正确的遮挡所有其它图形，还有图形有透明度因为高亮和正常图形叠加导致不正确的透明度显示，还有移动端上因为每个图表都要多一个 canvas 带来的额外内存开销。因此 3 里默认不会开启该优化，只有在图形数量特别多，有必要做该优化时才会自动开启。
		/// </summary>
		public int hoverLayerThreshold { get; set; } = 3000;

		/// <summary>
		/// boolean
		/// 是否使用 UTC 时间。
		/// true: 表示 axis.type 为 'time' 时，依据 UTC 时间确定 tick 位置，并且 axisLabel 和 tooltip 默认展示的是 UTC 时间。
		/// false: 表示 axis.type 为 'time' 时，依据本地时间确定 tick 位置，并且 axisLabel 和 tooltip 默认展示的是本地时间。
		/// 默认取值为false，即使用本地时间。因为考虑到：
		/// 很多情况下，需要展示为本地时间（无论服务器存储的是否为 UTC 时间）。
		/// 如果 data 中的时间为 '2012-01-02' 这样的没有指定时区的时间表达式，往往意为本地时间。默认情况下，时间被展示时需要和输入一致而非有时差。
		/// 注意，这个参数实际影响的是『展示』，而非用户输入的时间值的解析。
		/// 关于用户输入的时间值（例如 1491339540396, '2013-01-04' 等）的解析，参见 date 中时间相关部分。
		/// </summary>
		public Boolean useUTC { get; set; } = false;

	}
}
